struct Uniforms {
    modelViewProjectionMatrix : mat4x4f,
}

@group(0) @binding(0) var<uniform > uniforms : Uniforms;
@group(0) @binding(1) var mySampler : sampler;
@group(0) @binding(2) var myTexture : texture_2d<f32>;

struct VertexOutput {
    @builtin(position) Position : vec4f,
    @location(0) fragUV : vec2f,
}

@vertex
fn vertex_main(@location(0) position : vec4f, @location(1) uv : vec2f) -> VertexOutput{
    return VertexOutput(uniforms.modelViewProjectionMatrix * position, uv);
}

@fragment
fn fragment_main(@location(0) fragUV : vec2f) -> @location(0) vec4f{
    return textureSample(myTexture, mySampler, fragUV);
}
